home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Utilities / AmiMirror / Developer / prefs / source / XpkWin.h < prev   
Encoding:
Text File  |  1999-06-30  |  13.3 KB  |  301 lines

  1.  
  2. ///­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯ <
  3. ///
  4. ///ª¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Object: XpkWin ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥ <
  5. ///
  6. ///¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´ <
  7. ///
  8. /*                             ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  9. ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥    XpkWinArrow()    ª¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  10. ¢                              ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´                      ¢
  11. ¢                                 Go to next "step".                        ¢
  12. ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´
  13. */
  14. ULONG XpkWinArrow (struct IClass *cl, Object *obj, Msg msg)
  15. {
  16.   ULONG x;
  17.   struct XWData *data = INST_DATA(cl, obj);
  18.  
  19.   if ((x = XM->xm_Upto) < 100)
  20.     x++;
  21.   set (data->XpkStep, MUIA_Numeric_Value, x);
  22.   return (0L);
  23. }
  24. /*                             ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  25. ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥    XpkWinStep()     ª¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  26. ¢                              ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´                      ¢
  27. ¢                              Manual select of "step".                     ¢
  28. ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´
  29. */
  30. ULONG XpkWinStep (struct IClass *cl, Object *obj, Msg msg)
  31. {
  32.   STRPTR str;
  33.   struct XWData *data = INST_DATA(cl, obj);
  34.  
  35.   DoMethod (data->XpkList, MUIM_List_GetEntry, MUIV_List_GetEntry_Active, &str);
  36.   if (GetXpkMode (str, xget (data->XpkStep, MUIA_Numeric_Value)))
  37.     {
  38.       RDF (data->pspeed,  GETMES(XPK_SPEED_FORMAT), XM->xm_PackSpeed);
  39.       RDF (data->upspeed, GETMES(XPK_SPEED_FORMAT), XM->xm_UnpackSpeed);
  40.       RDF (data->ratio,   GETMES(XPK_RATIO_FORMAT), XM->xm_Ratio/10, XM->xm_Ratio%10);
  41.       set (data->XpkPSpeed,  MUIA_Text_Contents, data->pspeed);
  42.       set (data->XpkUPSpeed, MUIA_Text_Contents, data->upspeed);
  43.       set (data->XpkRatio,   MUIA_Text_Contents, data->ratio);
  44.       set (data->XpkComment, MUIA_Text_Contents, XM->xm_Description);
  45.     }
  46.   else
  47.     {
  48.       set (data->XpkPSpeed,  MUIA_Text_Contents, empty);
  49.       set (data->XpkUPSpeed, MUIA_Text_Contents, empty);
  50.       set (data->XpkRatio,   MUIA_Text_Contents, empty);
  51.       set (data->XpkComment, MUIA_Text_Contents, empty);
  52.     }
  53.   return (0L);
  54. }
  55. /*                             ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  56. ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥  XpkWinListSelect() ª¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  57. ¢                              ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´                      ¢
  58. ¢                             Select packer in the list.                    ¢
  59. ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´
  60. */
  61. ULONG XpkWinListSelect (struct IClass *cl, Object *obj, Msg msg)
  62. {
  63.   STRPTR str;
  64.   ULONG  e = ENCRYPT_ABSENT;
  65.   struct XWData *data = INST_DATA(cl, obj);
  66.  
  67.   DoMethod (data->XpkList, MUIM_List_GetEntry, MUIV_List_GetEntry_Active, &str);
  68.   if (GetXpkInfo (str))
  69.     {
  70.       set (data->XpkFName, MUIA_Floattext_Text, XI->xpi_LongName);
  71.       set (data->XpkDesc,  MUIA_Floattext_Text, XI->xpi_Description);
  72.       if (XI->xpi_Flags & XPKIF_ENCRYPTION)
  73.         e = ENCRYPT_PRESENT;
  74.       if (XI->xpi_Flags & XPKIF_NEEDPASSWD)
  75.         e = ENCRYPT_PASSWORD;
  76.       set (data->XpkEncrypt, MUIA_Text_Contents, GETMES(e));
  77.       set (data->XpkStep,  MUIA_Numeric_Value, XI->xpi_DefMode);
  78.       DoMethod (obj, MUIM_XW_Step);
  79.       set (data->XpkPassword, MUIA_Disabled, e == ENCRYPT_ABSENT);
  80.     }
  81.   else
  82.     {
  83.       set (data->XpkFName,    MUIA_Floattext_Text, NULL);
  84.       set (data->XpkDesc,     MUIA_Floattext_Text, NULL);
  85.       set (data->XpkEncrypt,  MUIA_Text_Contents, empty);
  86.       set (data->XpkStep,     MUIA_Numeric_Value, 0L);
  87.       set (data->XpkPassword, MUIA_Disabled, TRUE);
  88.     }
  89.   return (0L);
  90. }
  91. /*                             ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  92. ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥     XpkWinOpen()    ª¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  93. ¢                              ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´                      ¢
  94. ¢                                  Open XPK window.                         ¢
  95. ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´
  96. */
  97. ULONG XpkWinOpen (struct IClass *cl, Object *obj, Tie *tie)
  98. {
  99.   LONG x, y = -1;
  100.   struct XWData *data = INST_DATA(cl, obj);
  101.  
  102.   DoMethod (data->XpkList, MUIM_List_Clear);
  103.   if (GetXpkList())
  104.     {
  105.       for (x = 0L; x < XL->xpl_NumPackers; x++)
  106.         {
  107.           DoMethod (data->XpkList, MUIM_List_InsertSingle, XL->xpl_Packer[x], MUIV_List_Insert_Bottom);
  108.           if (! stricmp (XL->xpl_Packer[x], (STRPTR)(tie->ID1)))
  109.             y = x;
  110.         }
  111.       if (y >= 0)
  112.         {
  113.           set (data->XpkList,     MUIA_List_Active, y);
  114.           set (data->XpkStep,     MUIA_Numeric_Value,   tie->ID2);
  115.           set (data->XpkPassword, MUIA_String_Contents, tie->ID3);
  116.         }
  117.       else
  118.         {
  119.           set (data->XpkStep,     MUIA_Numeric_Value, 0L);
  120.           set (data->XpkPassword, MUIA_String_Contents, empty);
  121.           set (data->XpkPassword, MUIA_Disabled, TRUE);
  122.         }
  123.       set (obj, MUIA_Window_Open, TRUE);
  124.       set (obj, MUIA_Window_ActiveObject, data->XpkLView);
  125.     }
  126.   else
  127.     DoMethod (MainWin, MUIM_MW_XpkClose, FALSE);
  128.   return (0L);
  129. }
  130.  
  131. /*                             ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  132. ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥    XpkWinClose()    ª¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  133. ¢                              ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´                      ¢
  134. ¢                                 Close XPK window.                         ¢
  135. ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´
  136. */
  137. ULONG XpkWinClose (struct IClass *cl, Object *obj, Tie *tie)
  138. {
  139.   STRPTR str;
  140.   struct XWData *data = INST_DATA(cl, obj);
  141.  
  142.   set (obj, MUIA_Window_Open, FALSE);
  143.   if (tie->ID1)
  144.     {
  145.       DoMethod (data->XpkList, MUIM_List_GetEntry, MUIV_List_GetEntry_Active, &str);
  146.       DoMethod (MainWin, MUIM_MW_XpkClose, str, xget (data->XpkStep, MUIA_Numeric_Value), getstr (data->XpkPassword));
  147.     }
  148.   else
  149.     DoMethod (MainWin, MUIM_MW_XpkClose, FALSE);
  150.   return (0L);
  151. }
  152.  
  153. /*                           ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  154. ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥     XpkWinNew()     ª¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  155. ¢                            ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´                        ¢
  156. ¢                     XPK window initialization due OM_NEW.                 ¢
  157. ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´
  158. */
  159. ULONG XpkWinNew (struct IClass *cl, Object *obj, struct opSet *msg)
  160. {
  161.   struct XWData *data;
  162.   Object *XpkLView,  *XpkList;
  163.   Object *XpkFName,  *XpkDesc,  *XpkEncrypt, *XpkPassword;
  164.   Object *XpkStep,   *XpkArrow, *XpkPSpeed,  *XpkUPSpeed, *XpkRatio, *XpkComment;
  165.   Object *XpkUseBut, *XpkCancelBut;
  166.  
  167.   obj = (Object *)DoSuperNew (cl,obj,
  168.         MUIA_Window_Title, GETMES(XPKWIN_TITLE),
  169.         MUIA_Window_ID, MAKE_ID('X','P','K','W'),
  170.         MUIA_Window_ScreenTitle, GETMES(PROG_COPYRIGHT),
  171.         WindowContents, VGroup,
  172.               Child, HGroup,
  173.                      Child, XpkLView = ListviewObject,
  174.                             MUIA_Weight, 10,
  175.                             GroupFrameT(GETMES(XPKLIST_TITLE)),
  176.                             MUIA_Listview_List, XpkList = ListObject,
  177.                                  InputListFrame,
  178.                                  MUIA_List_AutoVisible, TRUE,
  179.                                  End,
  180.                             End,
  181.                      Child, VGroup,
  182.                             Child, VGroup,
  183.                                    GroupFrameT(GETMES(XPKINFO_TITLE)),
  184.                                    Child, CLabel1(GETMES(XPK_FULLNAME_STR)),
  185.                                    Child, XpkFName = FloattextObject, TextFrame,
  186.                                           End,
  187.                                    Child, CLabel1(GETMES(XPK_DESC_STR)),
  188.                                    Child, XpkDesc = FloattextObject, TextFrame,
  189.                                           End,
  190.                                    Child, ColGroup(2),
  191.                                           Child, Label1(GETMES(ENCRYPT_STR)),
  192.                                           Child, XpkEncrypt = TextObject, TextFrame,
  193.                                                  End,
  194.                                           Child, Label1(GETMES(PACKSPEED_STR)),
  195.                                           Child, XpkPSpeed = TextObject, TextFrame,
  196.                                                  End,
  197.                                           Child, Label1(GETMES(UNPACKSPEED_STR)),
  198.                                           Child, XpkUPSpeed = TextObject, TextFrame,
  199.                                                  End,
  200.                                           Child, Label1(GETMES(RATIO_STR)),
  201.                                           Child, XpkRatio = TextObject, TextFrame,
  202.                                                  End,
  203.                                           Child, Label1(GETMES(COMMENT_STR)),
  204.                                           Child, XpkComment = TextObject, TextFrame,
  205.                                                  End,
  206.                                           End,
  207.                                    End,
  208.                             Child, VSpace(0),
  209.                             Child, ColGroup(2),
  210.                                    GroupFrameT(GETMES(XPKSET_TITLE)),
  211.                                    Child, KeyLabel1(GETMES(STEP_STR), GETKEY(STEP_KEY)),
  212.                                    Child, HGroup,
  213.                                           Child, XpkStep  = KeySlider(0, 100, 0, GETKEY(STEP_KEY)),
  214.                                           Child, XpkArrow = PopButton (MUII_ArrowRight),
  215.                                           End,
  216.                                    Child, KeyLabel1(GETMES(PASSWORD_STR), GETKEY(PASSWORD_KEY)),
  217.                                    Child, XpkPassword = StringObject,
  218.                                           StringFrame,
  219.                                           MUIA_ControlChar, GETKEY(PASSWORD_KEY),
  220.                                           MUIA_String_MaxLen, 32,
  221.                                           MUIA_String_Secret, TRUE,
  222.                                           End,
  223.                                    End,
  224.                             End,
  225.                      End,
  226.               Child, HGroup, MUIA_Group_SameSize, TRUE,
  227.                      Child, XpkUseBut = KeyButton (GETMES(USE_BUT), GETKEY(USE_KEY)),
  228.                      Child, XpkCancelBut = KeyButton (GETMES(CANCEL_BUT), GETKEY(CANCEL_KEY)),
  229.                      End,
  230.               End,
  231.         TAG_DONE);
  232.  
  233.  
  234.   if (! obj)
  235.     {
  236.       MakeRequest (REQ_TITLE_ERROR, WINDOW_PROBLEM, EXIT_BUT, NULL);
  237.       return (GAME_OVER);
  238.     }
  239.  
  240. // filling XPK window data structure
  241.   data = INST_DATA(cl, obj);
  242.   data->XpkLView   = XpkLView;   data->XpkList     = XpkList;
  243.   data->XpkFName   = XpkFName;   data->XpkDesc     = XpkDesc;
  244.   data->XpkEncrypt = XpkEncrypt; data->XpkStep     = XpkStep;
  245.   data->XpkArrow   = XpkArrow;   data->XpkPSpeed   = XpkPSpeed;
  246.   data->XpkUPSpeed = XpkUPSpeed; data->XpkRatio    = XpkRatio;
  247.   data->XpkComment = XpkComment; data->XpkPassword = XpkPassword;
  248.  
  249. // Activate keyboard control
  250.   DoMethod (obj, MUIM_MultiSet, MUIA_CycleChain, TRUE, XpkLView, XpkStep, XpkArrow, XpkPassword, XpkUseBut, XpkCancelBut, NULL);
  251.  
  252. // Set methods for interface changes
  253.  
  254. // close with window gadget
  255.   DoMethod (obj, MUIM_Notify,           MUIA_Window_CloseRequest, TRUE,
  256.                                         obj, 2,
  257.                                         MUIM_XW_Close, FALSE);
  258. // close with "Cancel" button
  259.   DoMethod (XpkCancelBut, MUIM_Notify,  MUIA_Pressed, FALSE,
  260.                                         obj, 2,
  261.                                         MUIM_XW_Close, FALSE);
  262. // close with "Use" button
  263.   DoMethod (XpkUseBut, MUIM_Notify,     MUIA_Pressed, FALSE,
  264.                                         obj, 2,
  265.                                         MUIM_XW_Close, TRUE);
  266. // select node in the list
  267.   DoMethod (XpkList, MUIM_Notify,       MUIA_List_Active,
  268.                                         MUIV_EveryTime,
  269.                                         obj, 1,
  270.                                         MUIM_XW_ListSelect);
  271. // control "step" of packer
  272.   DoMethod (XpkStep, MUIM_Notify,       MUIA_Numeric_Value,
  273.                                         MUIV_EveryTime,
  274.                                         obj, 1,
  275.                                         MUIM_XW_Step);
  276.   DoMethod (XpkArrow, MUIM_Notify,      MUIA_Pressed, FALSE,
  277.                                         obj, 1,
  278.                                         MUIM_XW_Arrow);
  279.   return ((ULONG)obj);
  280. }
  281.  
  282. /*                             ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  283. ­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥ XpkWinDispatcher()  ª¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¯
  284. ¢                              ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´                      ¢
  285. ¢                            Dispatcher of object XpkWin.                   ¢
  286. ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡´
  287. */
  288. ULONG __saveds __asm XpkWinDispatcher(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg)
  289. {
  290.   switch (msg->MethodID)
  291.     {
  292.       case OM_NEW             : return (XpkWinNew        (cl, obj, (APTR)msg));
  293.       case MUIM_XW_Open       : return (XpkWinOpen       (cl, obj, (APTR)msg));
  294.       case MUIM_XW_Close      : return (XpkWinClose      (cl, obj, (APTR)msg));
  295.       case MUIM_XW_ListSelect : return (XpkWinListSelect (cl, obj, (APTR)msg));
  296.       case MUIM_XW_Step       : return (XpkWinStep       (cl, obj, (APTR)msg));
  297.       case MUIM_XW_Arrow      : return (XpkWinArrow      (cl, obj, (APTR)msg));
  298.     }
  299.   return (DoSuperMethodA (cl, obj, msg));
  300. }
  301.